package org.jeecgframework.web.service;

import org.jeecgframework.core.common.service.CommonService;
import org.jeecgframework.web.system.pojo.base.CbsPartInfoEntity;
import org.jeecgframework.web.system.pojo.base.CbsProcurementNoteEntity;
import org.jeecgframework.web.system.pojo.base.CbsShoppingCartEntity;
import org.jeecgframework.web.system.pojo.vo.ProcurementNote;
import org.jeecgframework.web.system.pojo.vo.ShoppingCar;

import java.util.List;

/**
 * Created by red on 2016/9/1.
 * 购物车service。购物车相关的业务操作，如：查询购物车详情，购物车变更等。
 */
public interface CbsShoppingCarServiceI extends ZyCommonService {

    /**
     * 根据用户名查询该用户的购物车信息
     * @param userName 如果是非金牌用户传入openId（依据表中的createBy字段查询）。
     * @return
     */
    public List<CbsShoppingCartEntity> getShoppingCarByUserName(String userName);


    /**
     * 添加商品到购物篮
     * @param productId
     * @param num
     */
    public void addProductToShoppingCar(String productId,int num);

    /**
     * 添加商品到购物篮
     * @param productId 商品id
     * @param num 数量
     * @param openId 微信用户openId
     */
    public void addProductToShoppingCar(String productId,int num,String openId);

    /**
     * 添加商品到购物篮
     * @param product
     * @param num 数量
     * @param openId 非金牌用户使用openId
     * @return
     */
    public void addProductToShoppingCar(CbsPartInfoEntity product,int num,String openId);

    /**
     * 从购物篮移除商品
     * @param product 商品信息
     * @param num 数量
     * @param userName 依此来查询购物篮，如果是非金牌用户传入openId
     * @return
     */
    public void reduceShoppingCar(CbsShoppingCartEntity product,int num,String userName);

    /**
     * 从购物篮移除商品
     * @param productId
     * @param num
     * @return
     */
    public void reduceShoppingCar(String productId,int num,String userName);

    /**
     * 清空购物栏
     * @return
     */
    public void emptyShoppingCar(String userName);

    /**
     * 构造购物车vo
     * @param userName
     * @return
     */
    public ShoppingCar generateShoppingCar(String userName);

    /**
     * 依据openId构造购物车数据
     * @param openId
     * @return
     */
    public ShoppingCar generateShoppingCarWithOpenId(String openId);


    /**
     * 更新购物车商品数量
     * @param productId
     * @param num
     * @param userName
     */
    public void updateProductNum(String productId,int num,String userName);

    /**
     * 微信端提交采购单
     * @param note 采购单数据
     * @param openId 如果是非金牌用户，使用session中的openId做为关联数据
     * @return
     */
    public ProcurementNote orderFromCar(ProcurementNote note,String openId);


}
